package app.inmos.dialogs;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.Fragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import app.inmos.build.R;
import app.inmos.functions.json.EnvioMailUtilsJSON;
import app.inmos.listados.ItemListadoPublicaciones;
import app.inmos.utils.ValidateEmailUtils;

@SuppressLint("ValidFragment")
public class ContactoPropiedadDialogo extends DialogFragment {
	

   
   private ItemListadoPublicaciones itemSeleccionado;
   
   private Fragment fragmentoPropiedad;
   
   private String nombreIngresado;
   
   private String mailIngresado;
   
   private String telefonoIngresado;
   
   private String asuntoIngresado;
   
   private View vista;
   
   
   
   public ContactoPropiedadDialogo(ItemListadoPublicaciones pItemListado,Fragment pFragment) {
	    setItemSeleccionado(pItemListado);
	    setFragmentoPropiedad(pFragment);
   }
	
	public ContactoPropiedadDialogo(){
		
	}
	
	
	
   @Override
   public Dialog onCreateDialog(Bundle savedInstanceState) {
	   
	 
		    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
		    // Get the layout inflater
		    LayoutInflater inflater = getActivity().getLayoutInflater();
		    
		    setVista(inflater.inflate(R.layout.envio_mail_propiedad, null));

		    // Inflate and set the layout for the dialog
		    // Pass null as the parent view because its going in the dialog layout
		    builder.setView(getVista()).setPositiveButton("Enviar", new DialogInterface.OnClickListener() {
               @Override
               public void onClick(DialogInterface dialog, int id) {
            	   
            	 
            	    setTelefonoIngresado(((EditText) getVista().findViewById(R.id.completarTelefono)).getText().toString());
            	    setAsuntoIngresado(((EditText) getVista().findViewById(R.id.completarAsunto)).getText().toString());
           	        setMailIngresado(((EditText) getVista().findViewById(R.id.completarMail)).getText().toString());
           	        setNombreIngresado(((EditText) getVista().findViewById(R.id.completarNombre)).getText().toString());
           	   
           	        String mensajeUTF8;
           	        
				    try {
				    	
					    mensajeUTF8 = URLEncoder.encode(getAsuntoIngresado(), "UTF-8");
					    setAsuntoIngresado(mensajeUTF8);
				   
				    } catch (UnsupportedEncodingException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
				    }
				 
           	        
           	        
     			    if(!("".equals(getMailIngresado().trim())||("".equals(getNombreIngresado().trim())||"".equals(getTelefonoIngresado().trim())||"".
     			    		equals(getAsuntoIngresado().trim())))){
     			       // se validan campos obligatorios	
	                   if(ValidateEmailUtils.validarEMail(getMailIngresado())){
	                	    //se valida mail valido
		                    if (EnvioMailUtilsJSON.getInstance().enviarMail(getMailIngresado(), getNombreIngresado(), getTelefonoIngresado(), getAsuntoIngresado())){
		                    	//si se envia correctamente mostramos mensaje exitoso
		                    	mostrarMensajeEnvioExitoso();
		                    }
		                    
	                       else
	                       { 
                   	       //si hay error al enviar mostramos cartel de error
   	                          mostrarMensajeEnvioError();
                            }
                       }
	                   else{
	                    	
	                    	   mostrarMensajeEMailInvalido();
	                    }
	                	   
     			    }
     			    else{
     			    	
     			    	       mostrarMensajeCamposObligatorios();	
     			    }

             }
               
           })
		    
		    .setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
	               public void onClick(DialogInterface dialog, int id) {
	                   getDialog().cancel();
	               }
	           });  
		    
		
		    TextView tVDescMensaje = (TextView)getVista().findViewById(R.id.completarAsunto);
		    
	        String mensaje="Me gustaria que se contacten conmigo porque me interesaria la propiedad con codigo " + getItemSeleccionado().getPropiedad().getIdPropiedad()
	        		        + " ubicada en Provincia-Pais: " + getItemSeleccionado().getPropiedad().getUbicacion() + " Direccion : " + 
	        		        getItemSeleccionado().getPropiedad().getDireccion();
	       
	        tVDescMensaje.setText(mensaje);
			
	           
		    return builder.create();
		    
		    
	 }

   public  void mostrarMensajeEnvioExitoso(){
		
		 DialogFragment newFragment = InformeDialogoMail.getInstance("Mensaje de Envio", "El mensaje ha sido enviado exitosamente.");
		            
		 newFragment.show(getFragmentManager(), "dialog");
	}
	
	
	public void mostrarMensajeEnvioError(){
			
		     DialogFragment newFragment = InformeDialogoMail.getInstance("Mensaje de Envio", "El mensaje no se ha podido enviar.");
	   
			 newFragment.show(getFragmentManager(), "dialog");
	}
	
	public void mostrarMensajeEMailInvalido(){
			
		     DialogFragment newFragment = InformeDialogoMail.getInstance("Informe", "El e-mail ingresado no es correcto.");
	 
			 newFragment.show(getFragmentManager(), "dialog");
	}
	
	public void mostrarMensajeCamposObligatorios(){
			
		     DialogFragment newFragment = InformeDialogoMail.getInstance("Informe", "Debe ingresar los campos obligatorios.");
	
			 newFragment.show(getFragmentManager(), "dialog");
	}
	
	
	

	public String getNombreIngresado() {
		return nombreIngresado;
	}

	public void setNombreIngresado(String nombreIngresado) {
		this.nombreIngresado = nombreIngresado;
	}

	public String getMailIngresado() {
		return mailIngresado;
	}

	public void setMailIngresado(String mailIngresado) {
		this.mailIngresado = mailIngresado;
	}

	public String getTelefonoIngresado() {
		return telefonoIngresado;
	}

	public void setTelefonoIngresado(String telefonoIngresado) {
		this.telefonoIngresado = telefonoIngresado;
	}

	public String getAsuntoIngresado() {
		return asuntoIngresado;
	}

	public void setAsuntoIngresado(String asuntoIngresado) {
		this.asuntoIngresado = asuntoIngresado;
	}

	public ItemListadoPublicaciones getItemSeleccionado() {
		return itemSeleccionado;
	}
	
	
	
	public void setItemSeleccionado(ItemListadoPublicaciones itemSeleccionado) {
		this.itemSeleccionado = itemSeleccionado;
	}



	public Fragment getFragmentoPropiedad() {
		return fragmentoPropiedad;
	}



	public void setFragmentoPropiedad(Fragment fragmentoPropiedad) {
		this.fragmentoPropiedad = fragmentoPropiedad;
	}

	public View getVista() {
		return vista;
	}

	public void setVista(View vista) {
		this.vista = vista;
	}
	
	
	

}
